【iOSDC Japan 2024 レポート】Day1「楽しく簡単に!QRコードの読み取り機能を実装しよう」を聞いてきた #iosdc

【iOSDC Japan 2024 レポート】Day1「楽しく簡単に!QRコードの読み取り機能を実装しよう」を聞いてきた #iosdc

Clock Icon2024.08.24

2024年8月22日から24日に開催された「iOSDC Japan 2024」に参加してきた。WWDCが世界的なカンファレンスであるとすれば、iOSDC Japanは日本国内での最大のiOSデベロッパーカンファレンスだ。

この記事では、Day1「楽しく簡単に!QRコードの読み取り機能を実装しよう」についての感想を共有する。

楽しく簡単に!QRコードの読み取り機能を実装しよう

https://fortee.jp/iosdc-japan-2024/proposal/737bea3f-e4ce-4358-81d2-a96177d56004

登壇者

  • ぺんぎんさん

スライド

https://speakerdeck.com/penguinsan_pg/le-sikujian-dan-ni-qrkodonodu-miqu-riji-neng-woshi-zhuang-siyou

概要

iOSアプリには、カメラを使ってQRコードの検出・読み取りを行う機能がよく組み込まれます。
しかし、この機能をアプリ内で実装するには、AVCaptureSessionを用いた入力デバイスや出力データの管理、AVCaptureVideoPreviewLayerを用いたカメラプレビューの表示、AVCaptureMetadataOutputからQRコードの情報の取得...など、多くの関連するクラスを扱う必要があり、複雑な実装を行わなければなりませんでした。

そこで登場するのが、VisionKitフレームワークです。
iOS 16以降に利用可能なDataScannerViewControllerを使うことで、カメラを使った検出・読み取りの機能をシンプルかつ簡単に実装できます。

このトークでは、以下の内容についてお話しします。

  • VisionフレームワークとVisionKitフレームワークの概要
  • 従来のQRコード読み取り処理とその問題点 (AVFoundationフレームワークを利用した実装)
  • DataScannerViewControllerを用いた実装方法の紹介 (VisionKitフレームワークを利用した実装)

QRコードの読み取り機能に苦労していた日々は今日でおしまいです。
みんなで楽しくVisionKitフレームワークを学びましょう!

このセッションでは、iOSアプリでQRコード読み取り機能を簡単に実装するための手法が紹介された。従来のAVFoundationを利用した複雑な手法と、VisionKitフレームワークを使った新しい実装方法の比較を行っていた。

最後に、DataScannerViewControllerは非常に便利なクラスだが、iOS 16以降で利用可能であり、2018年以降に発売された端末(Apple A12 Bionic以降のチップ搭載デバイス)である必要がある点に注意が必要だと紹介された。

こう思った

先日、個人開発しているアプリで従来のAVFoundationを用いたQRコードの読み取り機能を実装した。ユーザーからはズーム機能やタップ時のフォーカス機能の要望が上がっていたが、これらの修正は大掛かりなものになるため対応を躊躇していた。

このセッションで紹介されたDataScannerViewControllerを使えば、これらの要望に簡単に対応できそうだと感じた。

https://developer.apple.com/documentation/visionkit/datascannerviewcontroller

また、QRコード以外にもバーコードの読み取りにも対応している。バーコードと一口に言っても多くのフォーマットがあるが、DataScannerViewControllerでサポートしているバーコードの種別は以下のドキュメントに網羅されている。

https://developer.apple.com/documentation/Vision/VNBarcodeSymbology

開発中のアプリはDeployment TargetがiOS 16なので、このセッションで聞いた注意事項を参考に、isSupportedプロパティを使い、サポートしていればDataScannerViewControllerを利用し、サポートしていなければ旧機能を利用することで対応がすぐにできそうだと思った。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.